package cn.mesmile.image.compression;

import io.minio.MinioClient;
import io.minio.errors.MinioException;
import org.xmlpull.v1.XmlPullParserException;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;

/**
 * @author zb
 * @date 2021/3/12 17:43
 * @Description
 */
public class MinioUtils {


    public static void upload(String objectName, InputStream inputStream,long size){
        try {
            // 使用MinIO服务的URL，端口，Access key和Secret key创建一个MinioClient对象
            MinioClient minioClient = new MinioClient("http://124.71.186.115:9000",
                    "6N4H8XQ7I22OJ9KC4N6J", "YYOLiegKoS5VFV9ZjHFf4/paLDDj9aRg7A8PMdNs");

            // 检查存储桶是否已经存在
            synchronized (MinioUtils.class){
                boolean isExist = minioClient.bucketExists("abimages");
                if(isExist) {
                    System.out.println("Bucket already exists.");
                } else {
                    // 创建一个名为asiatrip的存储桶，用于存储照片的zip文件。
                    minioClient.makeBucket("abimages");
                }
            }


            // 使用putObject上传一个文件到存储桶中。
            minioClient.putObject("abimages", objectName, inputStream,size,new HashMap<>());
            System.out.println("/home/user/Photos/asiaphotos.zip is successfully uploaded as asiaphotos.zip to `asiatrip` bucket.");
            System.out.println("https://play.min.io/abimages/ex1.png");
        } catch(Exception e) {
            System.out.println("Error occurred: " + e);
        }
    }




      /*
        InvalidBucketNameException : 非法的存储桶名称。
        NoResponseException : 服务器无响应。
        IOException : 连接异常
        org.xmlpull.v1.XmlPullParserException : 解析返回的XML异常
        ErrorResponseException : 执行失败
        InternalException : 内部异常
      */

    public static void main(String[] args) throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException {
        try {
            // 使用MinIO服务的URL，端口，Access key和Secret key创建一个MinioClient对象
            MinioClient minioClient = new MinioClient("https://play.min.io",
                    "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");

            // 检查存储桶是否已经存在
            boolean isExist = minioClient.bucketExists("abimages");
            if(isExist) {
                System.out.println("Bucket already exists.");
            } else {
                // 创建一个名为asiatrip的存储桶，用于存储照片的zip文件。
                minioClient.makeBucket("abimages");
            }

            // 使用putObject上传一个文件到存储桶中。
            minioClient.putObject("abimages","ex1.png", "E:\\images\\ex1.png");
            System.out.println("/home/user/Photos/asiaphotos.zip is successfully uploaded as asiaphotos.zip to `asiatrip` bucket.");
            System.out.println("https://play.min.io/abimages/ex1.png");
        } catch(MinioException e) {
            System.out.println("Error occurred: " + e);
        }
    }

}
